#模块

# 使用内建的sys模块
import sys


def test():
    args = sys.argv
    if len(args) == 1:
        print('Hello World')
    elif len(args) == 2:
        print('Hello, %s!' % args[1])
    else:
        print('too many arguments')


if __name__ == '__main__':
    test()


# D:\pythonProjects\PythonBasicsDemo>python demo05.py ljy
# Hello, ljy!
#
# D:\pythonProjects\PythonBasicsDemo>python demo05.py ljy hahaha
# too many arguments
#
# D:\pythonProjects\PythonBasicsDemo>python demo05.py
# Hello World

# D:\pythonProjects\PythonBasicsDemo>python
# Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
# Type "help", "copyright", "credits" or "license" for more information.
# >>> import Demo05
# >>> Demo05.test()
# Hello World
# >>>


# 作用域
# 在一个模块中，我们可能会定义很多函数和变量，正常的函数和变量名是公开的（public），但有的函数和变量我们希望给别人使用，
# 有的函数和变量我们希望仅仅在模块内部使用。在Python中，是通过_前缀来实现的
# （即私有方法前加下划线）

def _fun1(name):
    print('_fun1: %s' % name)


def _fun2(name):
    print('_fun2: %s' % name)


def fun(name):
    if len(name) > 3:
        _fun1(name)
    else:
        _fun2(name)


if __name__ == '__main__':
    fun('hahaha')

#当我们试图加载一个模块时，Python会在指定的路径下搜索对应的.py文件，如果找不到，就会报错：
# 默认情况下，Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块，搜索路径存放在sys模块的path变量中：
if __name__ == '__main__':
    print(sys.path)
